From 6bb7d9cc32d57d53870058c38a653d7945374273 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Wed, 18 Jul 2007 19:05:32 +0000 Subject: [PATCH] Remove (more or less) magic numbers. Use pre-defined macros for speed calculation. --- garmin_txt.c | 2 +- gpssim.c | 4 +- nmea.c | 17 ++--- reference/track/tracks.gpssim | 128 +++++++++++++++++----------------- vitosmt.c | 7 +- 5 files changed, 75 insertions(+), 83 deletions(-) diff --git a/garmin_txt.c b/garmin_txt.c index 767bfb614..97f7716c9 100644 --- a/garmin_txt.c +++ b/garmin_txt.c @@ -496,7 +496,7 @@ print_speed(double *distance, time_t *time) idist = si_round(dist); if ((*time != 0) && (idist > 0)) { - double speed = dist / (double)*time * SECONDS_PER_HOUR / 1000; + double speed = MPS_TO_KPH(dist / (double)*time); int ispeed = si_round(speed); if (speed < (double)0.01) diff --git a/gpssim.c b/gpssim.c index 067d41bd4..024cd47e1 100644 --- a/gpssim.c +++ b/gpssim.c @@ -96,8 +96,6 @@ gpssim_write_spd(double knotsperhour) gpssim_write_sentence(obuf); } -#define mpsec2knots(n) ((n) * 1.9438445 / 0.51444444) - static void gpssim_write_pt(const waypoint *wpt) { @@ -105,7 +103,7 @@ gpssim_write_pt(const waypoint *wpt) double lat, lon; if WAYPT_HAS(wpt, speed) { - gpssim_write_spd(mpsec2knots(wpt->speed)); + gpssim_write_spd(MPS_TO_KNOTS(wpt->speed)); } lat = degrees2ddmm(wpt->latitude); diff --git a/nmea.c b/nmea.c index 810c3767a..ee6878052 100644 --- a/nmea.c +++ b/nmea.c @@ -163,9 +163,6 @@ static struct tm opt_tm; /* converted "date" parameter */ #define MYNAME "nmea" -static const double kts2mps =0.51444444444444444; /* knots to m/s */ -static const double kmh2mps =0.27777777777777778; /* km/h to m/s */ - static char *opt_gprmc; static char *opt_gpgga; static char *opt_gpvtg; @@ -517,7 +514,7 @@ gprmc_parse(char *ibuf) /* capture useful data update and exit */ if (curr_waypt) { if (! WAYPT_HAS(curr_waypt, speed)) - WAYPT_SET(curr_waypt, speed, speed*kts2mps); + WAYPT_SET(curr_waypt, speed, KNOTS_TO_MPS(speed)); if (! WAYPT_HAS(curr_waypt, course)) WAYPT_SET(curr_waypt, course, course); /* The change of date wasn't recorded when @@ -529,7 +526,7 @@ gprmc_parse(char *ibuf) waypt = waypt_new(); - WAYPT_SET(waypt, speed, speed*kts2mps); + WAYPT_SET(waypt, speed, KNOTS_TO_MPS(speed)); WAYPT_SET(waypt, course, course); @@ -658,9 +655,9 @@ gpvtg_parse(char *ibuf) WAYPT_SET(curr_waypt, course, course); if (speed_k>0) - WAYPT_SET(curr_waypt, speed, speed_k*kmh2mps) + WAYPT_SET(curr_waypt, speed, KPH_TO_MPS(speed_k)) else - WAYPT_SET(curr_waypt, speed, speed_n*kts2mps); + WAYPT_SET(curr_waypt, speed, KNOTS_TO_MPS(speed_n)); } @@ -1206,7 +1203,7 @@ nmea_trackpt_pr(const waypoint *wpt) fix=='0' ? 'V' : 'A', fabs(lat), lat < 0 ? 'S' : 'N', fabs(lon), lon < 0 ? 'W' : 'E', - WAYPT_HAS(wpt, speed) ? (wpt->speed / kts2mps):(0), + WAYPT_HAS(wpt, speed) ? MPS_TO_KNOTS(wpt->speed):(0), WAYPT_HAS(wpt, course) ? (wpt->course):(0), (int) ymd); cksum = nmea_cksum(obuf); @@ -1227,8 +1224,8 @@ nmea_trackpt_pr(const waypoint *wpt) if ((opt_gpvtg) && (WAYPT_HAS(wpt, course) || WAYPT_HAS(wpt, speed))) { snprintf(obuf,sizeof(obuf),"GPVTG,%.3f,T,0,M,%.3f,N,%.3f,K", WAYPT_HAS(wpt, course) ? (wpt->course):(0), - WAYPT_HAS(wpt, speed) ? (wpt->speed / kts2mps):(0), - WAYPT_HAS(wpt, speed) ? (wpt->speed / kmh2mps):(0) ); + WAYPT_HAS(wpt, speed) ? MPS_TO_KNOTS(wpt->speed):(0), + WAYPT_HAS(wpt, speed) ? MPS_TO_KPH(wpt->speed):(0) ); cksum = nmea_cksum(obuf); gbfprintf(file_out, "$%s*%02X\n", obuf, cksum); diff --git a/reference/track/tracks.gpssim b/reference/track/tracks.gpssim index 1c8d2a878..5ba41390e 100644 --- a/reference/track/tracks.gpssim +++ b/reference/track/tracks.gpssim @@ -1,128 +1,128 @@ -$FRSPD,0.04*65 +$FRSPD,0.02*63 $FRWPT,3003.73100,N,09136.62100,W,1.0,250502,170621*63 -$FRSPD,1.24*66 +$FRSPD,0.64*63 $FRWPT,3003.76700,N,09136.63400,W,0.0,250502,170955*69 -$FRSPD,6.70*60 +$FRSPD,3.45*63 $FRWPT,3003.76200,N,09136.49600,W,0.0,250502,171200*6C -$FRSPD,7.43*61 +$FRSPD,3.82*68 $FRWPT,3003.74000,N,09136.44300,W,0.0,250502,171248*68 -$FRSPD,7.39*6C +$FRSPD,3.80*6A $FRWPT,3003.69200,N,09136.31700,W,0.0,250502,171441*6F -$FRSPD,14.61*53 +$FRSPD,7.52*61 $FRWPT,3003.58700,N,09135.96400,W,0.0,250502,171716*64 -$FRSPD,43.13*54 +$FRSPD,22.19*59 $FRWPT,3003.46800,N,09135.80100,W,0.0,250502,171746*63 -$FRSPD,35.48*5B +$FRSPD,18.25*5F $FRWPT,3003.32300,N,09135.69400,W,0.0,250502,171820*66 -$FRSPD,25.45*57 +$FRSPD,13.09*5A $FRWPT,3003.23300,N,09135.55700,W,0.0,250502,171901*68 -$FRSPD,19.37*5D +$FRSPD,9.96*67 $FRWPT,3002.98400,N,09135.38500,W,0.0,250502,172046*6E -$FRSPD,12.72*57 +$FRSPD,6.54*66 $FRWPT,3002.94100,N,09135.39300,W,0.0,250502,172110*62 -$FRSPD,27.18*5D +$FRSPD,13.98*52 $FRWPT,3002.92800,N,09135.57600,W,0.0,250502,172151*65 -$FRSPD,38.06*5C +$FRSPD,19.58*54 $FRWPT,3002.77400,N,09135.78700,W,0.0,250502,172235*6F -$FRSPD,26.63*50 +$FRSPD,13.70*54 $FRWPT,3002.73100,N,09135.92300,W,0.0,250502,172308*61 -$FRSPD,0.38*6A +$FRSPD,0.20*63 $FRWPT,3002.83800,N,09136.01600,W,0.0,250502,180423*68 -$FRSPD,2.60*65 +$FRSPD,1.34*67 $FRWPT,3002.82000,N,09135.97800,W,2.0,250502,180604*66 -$FRSPD,3.97*6C +$FRSPD,2.04*67 $FRWPT,3002.78600,N,09135.96800,W,0.0,250502,180706*65 -$FRSPD,2.95*6F +$FRSPD,1.52*67 $FRWPT,3002.77200,N,09135.93700,W,1.0,250502,180818*65 -$FRSPD,3.68*6C +$FRSPD,1.89*61 $FRWPT,3002.78200,N,09135.86400,W,0.0,250502,181020*6E -$FRSPD,4.21*66 +$FRSPD,2.17*65 $FRWPT,3002.78100,N,09135.83000,W,0.0,250502,181109*66 -$FRSPD,5.13*66 +$FRSPD,2.64*61 $FRWPT,3002.80700,N,09135.78000,W,0.0,250502,181218*60 -$FRSPD,4.02*67 +$FRSPD,2.07*64 $FRWPT,3002.84700,N,09135.71200,W,0.0,250502,181422*60 -$FRSPD,5.14*61 +$FRSPD,2.64*61 $FRWPT,3002.86800,N,09135.68600,W,2.0,250502,181504*66 -$FRSPD,4.47*66 +$FRSPD,2.30*60 $FRWPT,3002.89500,N,09135.64500,W,1.0,250502,181614*6A -$FRSPD,4.46*67 +$FRSPD,2.29*68 $FRWPT,3002.92100,N,09135.62800,W,1.0,250502,181701*6A -$FRSPD,4.26*61 +$FRSPD,2.19*6B $FRWPT,3002.96100,N,09135.63100,W,0.0,250502,181807*6E -$FRSPD,3.94*6F +$FRSPD,2.03*60 $FRWPT,3003.01900,N,09135.63900,W,2.0,250502,181951*61 -$FRSPD,4.21*66 +$FRSPD,2.17*65 $FRWPT,3003.04700,N,09135.64700,W,0.0,250502,182039*65 -$FRSPD,4.67*64 +$FRSPD,2.40*67 $FRWPT,3003.07400,N,09135.66200,W,0.0,250502,182124*6F -$FRSPD,4.50*60 +$FRSPD,2.31*61 $FRWPT,3003.10800,N,09135.66200,W,0.0,250502,182217*66 -$FRSPD,3.39*68 +$FRSPD,1.74*63 $FRWPT,3003.13300,N,09135.68000,W,0.0,250502,182318*6C -$FRSPD,4.26*61 +$FRSPD,2.19*6B $FRWPT,3003.18100,N,09135.68100,W,0.0,250502,182437*6E -$FRSPD,3.71*64 +$FRSPD,1.91*68 $FRWPT,3003.29200,N,09135.71200,W,6.0,250502,182813*68 -$FRSPD,2.40*67 +$FRSPD,1.23*61 $FRWPT,3003.22400,N,09135.69600,W,2.0,250502,183136*63 -$FRSPD,2.97*6D +$FRSPD,1.53*66 $FRWPT,3003.19100,N,09135.68700,W,0.0,250502,183256*69 -$FRSPD,3.52*65 +$FRSPD,1.81*69 $FRWPT,3003.15800,N,09135.69000,W,0.0,250502,183402*6D -$FRSPD,1.91*68 +$FRSPD,0.98*60 $FRWPT,3003.14700,N,09135.72600,W,0.0,250502,183603*6C -$FRSPD,4.33*65 +$FRSPD,2.23*62 $FRWPT,3003.14900,N,09135.75800,W,0.0,250502,183648*64 -$FRSPD,4.77*65 +$FRSPD,2.46*61 $FRWPT,3003.15900,N,09135.80700,W,1.0,250502,183752*6B -$FRSPD,5.10*65 +$FRSPD,2.62*67 $FRWPT,3003.18800,N,09135.87100,W,0.0,250502,183918*67 -$FRSPD,3.64*60 +$FRSPD,1.87*6F $FRWPT,3003.21700,N,09135.87800,W,0.0,250502,184015*68 -$FRSPD,2.35*65 +$FRSPD,1.21*63 $FRWPT,3003.23800,N,09135.86600,W,6.0,250502,184125*6E -$FRSPD,2.60*65 +$FRSPD,1.34*67 $FRWPT,3003.21700,N,09135.88500,W,0.0,250502,184237*68 -$FRSPD,2.21*60 +$FRSPD,1.14*65 $FRWPT,3003.19200,N,09135.87500,W,0.0,250502,184401*6A -$FRSPD,1.94*6D +$FRSPD,1.00*60 $FRWPT,3003.16900,N,09135.85100,W,0.0,250502,184553*6E -$FRSPD,3.89*63 +$FRSPD,2.00*63 $FRWPT,3003.15400,N,09135.81600,W,0.0,250502,184654*67 -$FRSPD,4.31*67 +$FRSPD,2.22*63 $FRWPT,3003.14000,N,09135.78600,W,0.0,250502,184742*62 -$FRSPD,4.67*64 +$FRSPD,2.40*67 $FRWPT,3003.13500,N,09135.74100,W,0.0,250502,184841*67 -$FRSPD,3.42*64 +$FRSPD,1.76*61 $FRWPT,3003.13300,N,09135.70100,W,0.0,250502,184952*66 -$FRSPD,3.18*6B +$FRSPD,1.64*62 $FRWPT,3003.11300,N,09135.68200,W,0.0,250502,185049*6C -$FRSPD,4.32*64 +$FRSPD,2.22*63 $FRWPT,3003.06300,N,09135.66400,W,0.0,250502,185214*68 -$FRSPD,5.05*61 +$FRSPD,2.60*65 $FRWPT,3003.03400,N,09135.65400,W,0.0,250502,185256*6F -$FRSPD,4.01*64 +$FRSPD,2.06*65 $FRWPT,3003.01100,N,09135.64600,W,0.0,250502,185338*62 -$FRSPD,5.12*67 +$FRSPD,2.64*61 $FRWPT,3002.94600,N,09135.62300,W,0.0,250502,185511*66 -$FRSPD,4.14*60 +$FRSPD,2.13*61 $FRWPT,3002.90700,N,09135.65500,W,0.0,250502,185632*60 -$FRSPD,4.59*69 +$FRSPD,2.36*66 $FRWPT,3002.88500,N,09135.68500,W,0.0,250502,185724*60 -$FRSPD,4.66*65 +$FRSPD,2.39*69 $FRWPT,3002.85000,N,09135.72700,W,7.0,250502,185840*6B -$FRSPD,5.64*66 +$FRSPD,2.90*6A $FRWPT,3002.82400,N,09135.76000,W,0.0,250502,185928*63 -$FRSPD,5.27*61 +$FRSPD,2.71*65 $FRWPT,3002.79800,N,09135.79600,W,0.0,250502,190022*65 -$FRSPD,5.00*64 +$FRSPD,2.57*61 $FRWPT,3002.78400,N,09135.85900,W,0.0,250502,190141*60 -$FRSPD,4.56*66 +$FRSPD,2.35*65 $FRWPT,3002.77400,N,09135.90800,W,0.0,250502,190248*60 -$FRSPD,3.37*66 +$FRSPD,1.73*64 $FRWPT,3002.77900,N,09135.93800,W,0.0,250502,190343*64 -$FRSPD,3.45*63 +$FRSPD,1.77*60 $FRWPT,3002.80700,N,09135.95700,W,0.0,250502,190449*66 -$FRSPD,2.98*62 +$FRSPD,1.53*66 $FRWPT,3002.82800,N,09135.98000,W,0.0,250502,190557*6F diff --git a/vitosmt.c b/vitosmt.c index a0d290726..6d953177f 100644 --- a/vitosmt.c +++ b/vitosmt.c @@ -36,9 +36,6 @@ const long vitosmt_version =2; const long vitosmt_subversion =1000; const size_t vitosmt_headersize =24; const size_t vitosmt_datasize =64; -const double mile2km =1.609344; /* mile/h to kilometer/h */ -const double kts2mps =0.5144444444444444444; /* knots to m/s */ -const double mph2mps =0.447039259; /* mile/h to m/s */ static unsigned long ReadLong(FILE * f) @@ -195,7 +192,7 @@ vitosmt_read(void) wpt_tmp->shortname =xcalloc(16,1); snprintf(wpt_tmp->shortname, 15 , "WP%04d", ++serial); - WAYPT_SET(wpt_tmp, speed, speed*kts2mps); /* meters per second */ + WAYPT_SET(wpt_tmp, speed, KNOTS_TO_MPS(speed)); /* meters per second */ WAYPT_SET(wpt_tmp, course, course); wpt_tmp->pdop = pdop; @@ -294,7 +291,7 @@ vitosmt_waypt_pr(const waypoint *waypointp) /* speed */ if (waypointp->speed>0) - WriteDouble(&workbuffer[position], waypointp->speed / mph2mps ); + WriteDouble(&workbuffer[position], MPS_TO_MPH(waypointp->speed)); position += sizeof(double); /* course */ -- 2.30.2